1. Field of the Invention
The claimed invention relates generally to correcting errors that occur in storing data, and more particularly, but not by way of limitation, to providing redundancy in error correction coding protection to enhance the error correction capability of a storage element array.
2. Description of Related Art
A storage element array is generally a cooperative arrangement of a plurality of storage elements that are individually, and preferably concurrently, accessible by a client device as if all the storage elements were lumped into one storage unit. The type or types of storage elements used is not limited, permitting the selection of different types of storage elements to leverage the inherent advantages of each under certain operating conditions and/or processing requirements. Typical storage elements include tape cartridges, disk drives, solid state drives, optical drives, semiconductor memory devices generally, and the like, and various combinations thereof.
A tape drive array, for example, includes a plurality of discrete tape drives under common control of an array controller. The array controller virtualizes the totality of the physical storage space afforded by the plurality of tape drives and selectable tape cartridges forming the array, and presents that totality of physical storage capacity to one or more clients in the form of one or more virtual storage spaces.
A tape drive is inherently susceptible to write errors due to defects or even just variations in the recording material of the tape cartridge. The ongoing demand for recording material capable of greater storage density concomitantly increases the adverse affects of these writing errors. That is, written error rates that could in the past be disregarded as negligible without adversely affecting either quality or performance now must be affirmatively reckoned with.
Preferably, these writing errors are corrected “on the fly” with minimal impact on throughput performance by using embedded Error Correction Code (ECC) and corresponding ECC processing (checksum) routines. ECC is, generally speaking, a cyclic redundancy code, such as but not necessarily limited to Reed-Solomon code. The error detection capability of ECC processing solutions is limited by the fact that both the user data being verified and the ECC are stored to the same recording medium and in very close proximity to each other. The claimed embodiments are directed to improvements in ECC processing.